home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / source / yak160src.lha / Yak_1.60_Src / misc_Window.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-14  |  10.9 KB  |  331 lines

  1.  
  2. /*
  3.  *  Source machine generated by GadToolsBox V2.0b
  4.  *  which is (c) Copyright 1991-1993 Jaba Development
  5.  *
  6.  *  GUI Designed by : Martin W Scott and GaĆ«l Marziou
  7.  */
  8.  
  9.  
  10.  
  11.  
  12. #include <exec/types.h>
  13. #include <intuition/intuition.h>
  14. #include <intuition/classes.h>
  15. #include <intuition/classusr.h>
  16. #include <intuition/imageclass.h>
  17. #include <intuition/gadgetclass.h>
  18. #include <intuition/intuitionbase.h>
  19. #include <libraries/gadtools.h>
  20. #include <graphics/displayinfo.h>
  21. #include <graphics/gfxbase.h>
  22. #include <proto/exec.h>
  23. #include <proto/intuition.h>
  24. #include <proto/gadtools.h>
  25. #include <proto/graphics.h>
  26. #include <proto/locale.h>
  27. #include <proto/utility.h>
  28. #include <string.h>
  29.  
  30.  
  31. #include "version.h"
  32. #include "hotkey_types.h"
  33. #include "yak.h"
  34. #include "gui.h"
  35.  
  36. #define CATCOMP_NUMBERS
  37. #include "locale/yak_locale_strings.h"
  38.  
  39. extern struct Catalog    *Catalog;
  40. extern struct DosLibrary *DOSBase;
  41.  
  42. extern LONG (*HandleIDCMP)(void);
  43.  
  44. struct Window   *MiscWnd = NULL;
  45. struct Gadget   *MiscGList = NULL;
  46. struct Gadget   *MiscGadgets[Misc_CNT];
  47. UWORD            MiscLeft = 0;
  48. UWORD            MiscWidth = 443;
  49. UWORD            MiscHeight = 92;
  50. UBYTE           *MiscWdt = NULL;
  51.  
  52.  
  53. UWORD MiscGTypes[] = {
  54.         INTEGER_KIND,
  55.         INTEGER_KIND,
  56.         BUTTON_KIND,
  57.         CHECKBOX_KIND,
  58.         CHECKBOX_KIND,
  59.         CHECKBOX_KIND
  60. };
  61.  
  62. struct NewGadget MiscNGad[] = {
  63.         240,4,60,14,NULL,NULL,GD_ClickVol         ,PLACETEXT_LEFT  ,NULL ,NULL,
  64.         240,18,60,14,NULL,NULL,GD_AutoPointDelay  ,PLACETEXT_LEFT  ,NULL ,NULL,
  65.         170,75,100,13,NULL,NULL,GD_Return2        ,PLACETEXT_IN    ,NULL ,NULL,
  66.         227,42,26,11,NULL,NULL,GD_BlackBorderCheck,PLACETEXT_RIGHT ,NULL ,NULL,
  67.           7,42,26,11,NULL,NULL,GD_WildStarCheck   ,PLACETEXT_RIGHT ,NULL ,NULL,
  68.           7,54,26,11,NULL,NULL,GD_NoClickCheck    ,PLACETEXT_RIGHT ,NULL ,NULL
  69. };
  70.  
  71. VOID InitMiscNGad (VOID)
  72. {
  73.         MiscNGad[GD_ClickVol].ng_GadgetText = getString(CLICKVOLUME_STRING);
  74.         MiscNGad[GD_AutoPointDelay].ng_GadgetText = getString(AUTOPOINT_DELAY_STRING);
  75.         MiscNGad[GD_Return2].ng_GadgetText = getString(OK_STRING);
  76.         MiscNGad[GD_BlackBorderCheck].ng_GadgetText = getString(BLACK_BORDER);
  77.         MiscNGad[GD_WildStarCheck].ng_GadgetText = getString(WILD_STAR_STRING);
  78.         MiscNGad[GD_NoClickCheck].ng_GadgetText = getString(NOCLICK_STRING);
  79. }
  80.  
  81.  
  82. ULONG MiscGTags[] = {
  83.         (GTIN_Number),0,(GTIN_MaxChars),4,(STRINGA_Justification),STRINGRIGHT,(TAG_DONE),
  84.         (GTIN_Number),0,(GTIN_MaxChars),4,(STRINGA_Justification),STRINGRIGHT,(TAG_DONE),
  85.         (TAG_DONE),
  86.         (GTCB_Scaled),TRUE,(TAG_DONE),
  87.         (GTCB_Scaled),TRUE,(TAG_DONE),
  88.         (GTCB_Scaled),TRUE,(TAG_DONE)
  89. };
  90.  
  91.  
  92.  
  93. VOID
  94. MiscRender()
  95. {
  96.     UWORD X,Width;
  97.  
  98.     ComputeFont(MiscWidth,MiscHeight);
  99.  
  100.     Width = ComputeX( 440 );
  101.     X = OffX + ComputeX( 2 ) ;
  102.  
  103.     DrawBevelBox( MiscWnd->RPort, X,
  104.                  OffY + ComputeY( 72 ),
  105.                  Width,
  106.                  ComputeY( 19 ),
  107.                  GT_VisualInfo, VisualInfo, TAG_DONE );
  108.     DrawBevelBox( MiscWnd->RPort,  X,
  109.                  OffY + ComputeY( 38 ),
  110.                  Width,
  111.                  ComputeY( 34 ),
  112.                  GT_VisualInfo, VisualInfo, TAG_DONE );
  113.     DrawBevelBox( MiscWnd->RPort, X,
  114.                  OffY + ComputeY( 1 ),
  115.                  Width,
  116.                  ComputeY( 37 ),
  117.                  GT_VisualInfo, VisualInfo, TAG_DONE );
  118. }
  119.  
  120.  
  121.  
  122.  
  123. int
  124. OpenMiscWindow()
  125. {
  126.         struct NewGadget        ng;
  127.         struct Gadget   *g;
  128.         UWORD           lc,tc;
  129.         UWORD           wleft = MiscLeft,wtop = WindowTop,ww,wh;
  130.  
  131.         ComputeFont(MiscWidth,MiscHeight);
  132.  
  133.         ww = ComputeX(MiscWidth);
  134.         wh = ComputeY(MiscHeight); 
  135.  
  136.         if ((wleft +ww +OffX +Scr->WBorRight) > Scr->Width) wleft = Scr->Width -ww;
  137.         if ((wtop +wh +OffY +Scr->WBorBottom) > Scr->Height) wtop = Scr->Height -wh;
  138.  
  139.         if (! (g = CreateContext(&MiscGList))) 
  140.         {
  141.                 return(1L);
  142.         }
  143.  
  144.         for(lc = 0,tc = 0; lc < Misc_CNT; lc++) 
  145.         {
  146.  
  147.                 CopyMem((char *)&MiscNGad[ lc ],(char *)&ng,(long)sizeof(struct NewGadget));
  148.  
  149.                 ng.ng_VisualInfo = VisualInfo;
  150.                 ng.ng_TextAttr   = Font;
  151.                 ng.ng_LeftEdge   = OffX +ComputeX(ng.ng_LeftEdge);
  152.                 ng.ng_TopEdge    = OffY +ComputeY(ng.ng_TopEdge);
  153.                 ng.ng_Width      = ComputeX(ng.ng_Width);
  154.                 ng.ng_Height     = ComputeY(ng.ng_Height);
  155.  
  156.                 MiscGadgets[ lc ] = g = CreateGadgetA((ULONG)MiscGTypes[ lc ],g,&ng,(struct TagItem *) &MiscGTags[ tc ]);
  157.  
  158.                 while(MiscGTags[ tc ]) tc += 2;
  159.                 tc++;
  160.  
  161.                 if (NOT g)
  162.                         return(2L);
  163.         }
  164.     if (NOT (MiscWnd = OpenWindowTags(NULL,
  165.                         WA_Left,         wleft,
  166.                         WA_Top,          wtop,
  167.                         WA_Width,        ww +OffX +Scr->WBorRight,
  168.                         WA_Height,       wh +OffY +Scr->WBorBottom,
  169.                         WA_IDCMP,        LISTVIEWIDCMP|STRINGIDCMP|CYCLEIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
  170.                         WA_Flags,        WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
  171.                         WA_Gadgets,      MiscGList,
  172.                         WA_Title,        MiscWdt,
  173.                         WA_ScreenTitle,  getString(COPYRIGHT_STRING),
  174.                         WA_PubScreenName,PubScreenName,
  175.                         TAG_DONE)))
  176.     return(4L);
  177.  
  178.     GT_RefreshWindow(MiscWnd,NULL);
  179.  
  180.     MiscRender();
  181.  
  182.     return(0L);
  183. }
  184.  
  185.  
  186.  
  187.  
  188.  
  189. VOID
  190. CloseMiscWindow()
  191. {
  192.     CloseOneWindow(MiscWnd,NULL,MiscGList);
  193.     MiscWnd = NULL;
  194. }
  195.  
  196.  
  197.  
  198. /* initialise all gadgets of Misc window */
  199. static void
  200. InitMiscGadgets(void)
  201. {
  202.         InitToggleGadgets(MISC_WINDOW);
  203.         InitWindowGadget(GDX_ClickVol, GTIN_Number, click_volume, MISC_WINDOW);
  204.         InitWindowGadget(GDX_AutoPointDelay, GTIN_Number, autopoint_delay, MISC_WINDOW);
  205. }
  206.  
  207.  
  208. /* handle Misc window events */
  209. LONG
  210. HandleMiscIDCMP(void)
  211. {
  212.         struct IntuiMessage *msg;
  213.         struct Gadget   *gadget;
  214.         ULONG           class;
  215.         UWORD           code;
  216.         LONG            num;
  217.  
  218.         while (msg = GT_GetIMsg(MiscWnd->UserPort))
  219.         {
  220.                 class = msg->Class;
  221.                 code = msg->Code;
  222.                 gadget = (struct Gadget *)msg->IAddress;
  223.                 GT_ReplyIMsg(msg);
  224.  
  225.                 switch (class)
  226.                 {
  227.                   case CLOSEWINDOW:
  228.                         HideInterface();
  229.                         return ROOT_OKAY;
  230.  
  231.                   case GADGETUP:
  232.                   case GADGETDOWN:
  233.                         switch (gadget->GadgetID)
  234.                         {
  235.                           case GD_Return2:
  236.                                 UpdateWindowsPosition();
  237.                                 CloseMiscWindow();
  238.                                 if (!ShowRootWindow())
  239.                                         PostError(getString(Couldnt_open_other_window_ERR));
  240.                                 return ROOT_OKAY;
  241.  
  242.                           case GD_ClickVol:
  243.                                 num = GetNumber(gadget);
  244.                                                                 if (num<0)
  245.                                                                 {
  246.                                                                         num = 0;
  247.                                                                 }
  248.                                                                 else
  249.                                                                 {
  250.                                                                         if (num>64)
  251.                                                                         {
  252.                                                                                 num = 64;
  253.                                                                         }
  254.                                                                 }
  255.                                                                 click_volume = num;
  256.                                                                 InitWindowGadget(GDX_ClickVol, GTIN_Number, click_volume, MISC_WINDOW);
  257.                                                                 break;
  258.  
  259.                           case GD_AutoPointDelay:
  260.                                 num = GetNumber(gadget);
  261.                                                                 if (num<0)
  262.                                                                 {
  263.                                                                         num = 0;
  264.                                                                 }
  265.                                                                 else
  266.                                                                 {
  267.                                                                         if (num>5)
  268.                                                                         {
  269.                                                                                 num = 5;
  270.                                                                         }
  271.                                                                 }
  272.                                                                 autopoint_delay = num;
  273.                                                                 InitWindowGadget(GDX_AutoPointDelay, GTIN_Number, autopoint_delay, MISC_WINDOW);
  274.                                 break;
  275.  
  276.                           case GD_BlackBorderCheck:
  277.                                 blackborder ^= TRUE;
  278.                                 ToggleBlackBorder(blackborder);
  279.                                 break;
  280.         
  281.                           case GD_WildStarCheck: /* toggle */
  282.                                 wildstar ^= TRUE;
  283.                                 if (wildstar) WILDSTARON; else WILDSTAROFF;
  284.                                 break;
  285.  
  286.  
  287.                           case GD_NoClickCheck: /* toggle */
  288.                                 noclick ^= TRUE;
  289.                                 SetClickDrive(noclick);
  290.                                 break;
  291.  
  292.                         }                                       /* switch (gadget->GadgetID) */
  293.                         break;
  294.  
  295.                   case REFRESHWINDOW:
  296.                         GT_BeginRefresh(MiscWnd);
  297.                         GT_EndRefresh(MiscWnd, TRUE);
  298.                         break;
  299.  
  300.                 }                                               /* switch (class) */
  301.  
  302.         }                                                       /* while more messages */
  303.  
  304.         return ROOT_OKAY;
  305. }
  306.         
  307.  
  308.  
  309.         
  310. /* show our misc window */
  311. BOOL
  312. ShowMiscWindow(void)
  313. {
  314.         if (!OpenMiscWindow())  /* like the name says... */
  315.         {
  316.                 InitMiscGadgets();
  317.                 wndsigflag = 1 << MiscWnd->UserPort->mp_SigBit;
  318.                 curwin = MiscWnd;
  319.                 HandleIDCMP = HandleMiscIDCMP;
  320.                 return TRUE;
  321.         }
  322.  
  323.     FreeGadgets(MiscGList);
  324.     CloseDownScreen();
  325.     curwin =  NULL;
  326.     wndsigflag = 0L;
  327.     return FALSE;
  328. }
  329.  
  330.  
  331.